<?php
class DB {
	public $conn;

    // 析构函数
	function __construct() {
		$this->conn = $this->connect();

	}

	/**
	 * 连接MYSQL函数
	 * @return resource
	 */
	private function connect() {
		//连接mysql
		$conn = mysqli_connect(DB_HOST, DB_USER, DB_PWD) or die('数据库连接失败<br/>ERROR ' . mysqli_error() . ':' . mysqli_error());
		//设置字符集
		mysqli_set_charset($conn, DB_CHARSET);
		//打开指定的数据库
		mysqli_select_db($conn, DB_DBNAME) or die('指定的数据库打开失败');
		return $conn;
	}

	/**
	 * 返回错误信息
	 * @return string
	 */
	function err() {
		return mysqli_error($this->conn);
	}

	/**
	 * 插入一条记录
	 * @param string $sql
	 * @param obj $conn
	 * @return string
	 */
	function insert($sql) {
		if(mysqli_query($this->conn, $sql)) {
			return mysqli_insert_id($this->conn);
		}else {
			return 0;
		}
	}

	/**
	 * 更新一条记录
	 * @param string $sql
	 * @param obj $conn
	 * @return string
	 */
	function update($sql) {
		return mysqli_query($this->conn, $sql);
	}

	/**
	 * 删除一条记录
	 * @param string $sql
	 * @param obj $conn
	 * @return string
	 */
	function delete($sql) {
		return mysqli_query($this->conn, $sql);
	}

	/**
	 * 查询一条记录
	 * @param string $sql
	 * @param string $result_type
	 * @param obj $conn
	 * @return string|boolean
	 */
	function getOne($sql, $result_type = MYSQLI_ASSOC) {
		$result = mysqli_query($this->conn, $sql);
		if ($result && mysqli_num_rows($result) > 0) {
			return mysqli_fetch_array($result, $result_type);
		} else {
			return false;
		}
	}

	/**
	 * 获取表中的所有记录
	 * @param string $sql
	 * @param string $result_type
	 * @param obj $conn
	 * @return array|boolean
	 */
	function getAll($sql, $result_type = MYSQLI_ASSOC) {
		$result = mysqli_query($this->conn, $sql);
		if ($result && mysqli_num_rows($result) > 0) {
			while ($row = mysqli_fetch_array($result, $result_type)) {
				$rows[] = $row;
			}
			return $rows;
		} else {
			return [];
		}
	}

	/**
	 * 取得结果集中的记录的条数
     * @param string $sql
     * @param obj $conn
     * @return number|boolean
	*/
	function getRows($sql) {
		$result = mysqli_query($this->conn, $sql);
		if ($result) {
			return mysqli_num_rows($result);
		} else {
			return 0;
		}
	}

}